/**
 * 
 */
package com.whf15.o2o.service.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.whf15.o2o.cache.JedisUtil;
import com.whf15.o2o.dao.ShopCategoryDao;
import com.whf15.o2o.entity.Area;
import com.whf15.o2o.entity.ShopCategory;
import com.whf15.o2o.exceptions.AreaOperationException;
import com.whf15.o2o.service.ShopCategoryService;

/** 
* @author 作者 :whfo 
* @version 创建时间：2021年5月20日 下午4:20:46 
* 类说明 
*/
@Service
public class ShopCategoryServiceImpl implements ShopCategoryService{
	
	@Autowired
	private ShopCategoryDao ShopCategoryDao;
	@Autowired
	private JedisUtil.Keys jedisKeys;
	@Autowired
	private JedisUtil.Strings jedisStrings;
	
	
	private static Logger logger = LoggerFactory.getLogger(ShopCategoryServiceImpl.class);
	
//	@Override
//	public List<ShopCategory> getShopCategoryList(ShopCategory shopCategoryCondition) {
//		//定义redis的key前缀
//		String key = SCLISTKEY;
//		//定义接收对象
//		List<ShopCategory> shopCategoryList = null;
//		//定义jackson数据转换操作类
//		ObjectMapper mapper = new ObjectMapper();
//		//拼接出redis的key
//		if(shopCategoryCondition == null) {
//			//若查询条件为空，则列出所有首页大类，即parentId为空的店铺类别
//			key = key +"_allfirstlevel";
//		}else if(shopCategoryCondition != null && shopCategoryCondition.getParent()!=null
//				&& shopCategoryCondition.getParent().getShopCategoryId()!= null){
//			//若parentId不为空，泽雷出该parentId下的所有子类别
//			key = key + "_parent"+shopCategoryCondition.getParent().getShopCategoryId();
//		}else if(shopCategoryCondition != null) {
//			//列出所有子类别，不管其属于那个类，都列出来
//			key = key + "_allsecondlevel";
//		}
//		
//		//判断key是否存在
//		//判断key是否存在
//				if(!jedisKeys.exists(key)){
//					//如果不存在，则从数据库中取出相应数据
//					shopCategoryList = ShopCategoryDao.queryShopCategory(shopCategoryCondition);
//					//将相关的实体 类转换成string，存入redis里面对应的key中
//					String jsonString;
//					try {
//						 jsonString = mapper.writeValueAsString(shopCategoryList);
//					} catch (JsonProcessingException e) {
//						e.printStackTrace();
//						logger.error(e.getMessage());
//						throw new AreaOperationException(e.getMessage());
//					}
//					jedisStrings.set(key, jsonString);
//				}else {
//					//若存在则直接congredis里面取出相应的数据
//					String jsonString = jedisStrings.get(key);
//					//指定要将string转换成的集合类型
//					JavaType javaType = mapper.getTypeFactory().constructParametricType(ArrayList.class, Area.class);
//					try {
//						//将相关key对应的value里的string转换成对象的实体类集合
//						shopCategoryList = mapper.readValue(jsonString, javaType);
//					} catch (JsonParseException e) {
//						e.printStackTrace();
//						logger.error(e.getMessage());
//						throw new AreaOperationException(e.getMessage());
//					} catch (JsonMappingException e) {
//						e.printStackTrace();
//						logger.error(e.getMessage());
//						throw new AreaOperationException(e.getMessage());
//					} catch (IOException e) {
//						e.printStackTrace();
//						logger.error(e.getMessage());
//						throw new AreaOperationException(e.getMessage());
//					}
//				}
//		
//		return 	shopCategoryList ;
//
//	}
	@Override
	public List<ShopCategory> getShopCategoryList(ShopCategory shopCategoryCondition) {
		return ShopCategoryDao.queryShopCategory(shopCategoryCondition);
	}

}
